﻿<html DIR="LTR" xmlns:tool="http://www.microsoft.com/tooltip" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
  <head>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8" />
    <META NAME="save" CONTENT="history" />
    <title>Executando operações em lotes</title>
    
    <link rel="stylesheet" type="text/css" href="../local/Classic.css">
      
    </link>
    
    <script src="../local/script.js">
      
    </script><script src="../local/script_main.js">&amp;nbsp;</script>
  </head>
  <body>
    <!--Topic built:04/01/2010 05:03:30-->

    
    
    
    
    
    
    
    
    
    <div id="header">
      <table width="100%" id="topTable"><tr>
          <td align="left">
            <span id="headerBold">Executando operações em lotes</span>
          </td>
          <td align="right">
            
          </td>
        </tr></table>
      
      
      
    </div>
    <div id="mainSection">
      
        
        
    <font color="DarkGray">
      
    </font>
    <p />
    
    <p />
  
        <div id="introductionSection" class="section">
    <p>Para melhorar o desempenho quando várias atualizações de um banco de dados do SQL Server estiverem ocorrendo, o Microsoft SQL Server JDBC Driver tem a capacidade de enviar várias atualizações como uma única unidade de trabalho, também chamada de lote. </p>
    <p>As classes <a href="ec24963c-8b51-4838-91e9-1fbfa2347451.htm">SQLServerStatement</a>, <a href="a8481c06-fbba-432b-8c69-4f4619c20ad4.htm">SQLServerPreparedStatement</a> e <a href="30710a63-c05d-47d9-9cf9-c087a1c76373.htm">SQLServerCallableStatement</a> podem ser usadas para enviar atualizações em lotes. O método <a href="134f1455-c98c-4112-ab2d-9205a0db73df.htm">addBatch</a> é usado para adicionar um comando. O método <a href="6e5cda26-e24d-4637-8dfd-8135ba126e3b.htm">clearBatch</a> é usado para limpar a lista de comandos. O método <a href="fb034f63-2532-4da8-a1b0-bc125734585a.htm">executeBatch</a> é usado para enviar todos os comandos para processamento. Apenas as instruções DDL (linguagem de definição de dados) e DML (linguagem de manipulação de dados) que retornam uma contagem de atualização simples podem ser executadas como parte de um lote. </p>
    <p>O método <b>executeBatch</b> retorna uma matriz de valores <b>int</b> que correspondem à contagem de atualização de cada comando. Se um dos comandos falhar, uma <b>BatchUpdateException</b> será lançada e você deverá usar o método <b>getUpdateCounts</b> da classe <b>BatchUpdateException</b> para recuperar a matriz de contagem de atualização. Se um comando falhar, o driver continuará processando os comandos restantes. No entanto, se um comando tiver um erro de sintaxe, as instruções do lote falharão.</p>
    <div style="margin: .5em 1.5em .5em 1.5em"><b>Observação: </b>
      Se não for necessário usar contagens de atualização, você poderá emitir primeiro uma instrução SET NOCOUNT ON para o SQL Server. Isso reduzirá o tráfego de rede, além de melhorar o desempenho do aplicativo.<p />
    </div>
    <p>Como exemplo, crie a seguinte tabela no banco de dados de exemplo SQL Server 2005 AdventureWorks:</p>
    <div class="sampleCode"><span codeLanguage="other"><pre>CREATE TABLE TestTable 
   (Col1 int IDENTITY, 
    Col2 varchar(50), 
    Col3 int);</pre></span></div>
    <p>No exemplo a seguir, uma conexão aberta com o banco de dados de exemplo AdventureWorks é passada para a função, o método <b>addBatch</b> é usado para criar as instruções a serem executadas e o método <b>executeBatch</b> é chamado para enviar o lote ao banco de dados.</p>
    <div class="sampleCode"><span codeLanguage="other"><pre>public static void executeBatchUpdate(Connection con) {
   try {
      Statement stmt = con.createStatement();
      stmt.addBatch("INSERT INTO TestTable (Col2, Col3) VALUES ('X', 100)");
      stmt.addBatch("INSERT INTO TestTable (Col2, Col3) VALUES ('Y', 200)");
      stmt.addBatch("INSERT INTO TestTable (Col2, Col3) VALUES ('Z', 300)");
      int[] updateCounts = stmt.executeBatch();
      stmt.close();
   }
   catch (Exception e) {
      e.printStackTrace();
   }
}</pre></span></div>
  </div><span id="seeAlsoSpan"><h1 class="heading">Consulte também</h1></span><div id="seeAlsoSection" class="section" name="collapseableSection"><a href="7f8f3e8f-841e-4449-9154-b5366870121f.htm">Usando instruções com o JDBC Driver</a><br /><br /></div><!--[if gte IE 5]>
			<tool:tip element="seeAlsoToolTip" avoidmouse="false"/><tool:tip element="languageFilterToolTip" avoidmouse="false"/><tool:tip element="roleInfoSpan" avoidmouse="false"/>
		<![endif]-->
      <div id="footer" class="section">
        
		<hr />
		
		<span id="fb" class="feedbackcss">
			
			
		</span>
		
		<a href="9bad553b-9e70-4696-8499-2e35f772a1e0.htm">
			
			© 2010 Microsoft Corporation. Todos os direitos reservados.
		</a>
 	
	
      </div>
    </div>
  </body>
</html>